草庐IT

Python NotImplemented 常量

全部标签

c++ - 在 C/C++ 中使用常量优化的函数调用

如果你有常量函数调用,它没有副作用,它不依赖于任何东西,如下所示:intfoo(inta,intb){returna+b;}函数是否内联?或者,也许函数是在编译时求值的,并将求值结果插入到函数调用的位置? 最佳答案 我尝试使用相当老的gcc编译它-#includeintfoo(inta,intb){returna+b;}intmain(){std::cout主要编译成这个-LFB1439:subq$8,%rsp.LCFI1:movl$223,%esimovl$_ZSt4cout,%edicall_ZNSolsEixorl%eax,%

c++ - 通过常量迭代器从 STL 容器中删除

根据C++referenceSTL容器已在C++11标准中修复,以在erase方法中采用常量迭代器。以下代码无法在启用c++0x的g++4.7中编译。#includeintmain(){std::vectorvector;vector.push_back(0);std::vector::const_iteratorvectorItr=vector.begin();vector.erase(vectorItr);}显然新的签名没有实现。有没有什么时候解决这个问题的信息?我在C++0x/C++11SupportinGCC中找不到任何相关信息文章。 最佳答案

c++ - 常量字符数组*

我正在编写一个C++程序,该程序使用RRD库,这些库的函数需要一个“constchar*”数组。我以为我可以只声明数组,然后初始化数组的每个元素,但改变一个,就会改变所有的元素。显然我错过了一些东西。这是一个与我正在编写的代码类似的示例(即它表现出相同的问题)。stringintToString(longi){stringstreamss;strings;ss如有任何帮助,我们将不胜感激。 最佳答案 c_str()返回的constchar*std::string的方法指向std::string拥有的缓冲区,并且仅在下一次调用std的

c++ - 我们如何在常量成员函数中调用 "delete this; "?

我看到的代码片段如下:classUPNumber{public:UPNumber();UPNumber(intinitValue);...//pseudo-destructor(aconstmemberfunction,because//evenconstobjectsmaybedestroyed)voiddestroy()const{deletethis;}//whythislineiscorrect???...private:~UPNumber();};首先,我确信上面的类定义是正确的。这是我的问题,为什么我们可以像上面那样定义函数'destroy'?问的原因是为什么我们可以在常量

c++ - 编译器是否将给定常量参数的简单函数简化为唯一指令?

我一直认为这是真的,但从未得到任何验证。考虑一个非常简单的函数:intsubtractFive(intnum){returnnum-5;}如果对该函数的调用使用编译时常量,例如getElement(5);打开优化的编译器很可能会内联它。然而,我不清楚的是,如果num-5将在运行时或编译时进行评估。表达式简化会以这种方式通过内联函数递归扩展吗?还是不超越功能? 最佳答案 我们可以简单的看一下生成的程序集就知道了。这段代码:intsubtractFive(intnum){returnnum-5;}intmain(intargc,char

c++ - 为什么 clang 不像 #define 那样优化全局常量?

我有这个测试程序,使用#define常量:#include#defineFOO1intmain(){printf("%d\n",FOO);return0;}当使用“AppleLLVM版本10.0.0(clang-1000.11.45.5)”编译时,我得到一个8432字节的可执行文件。这是程序集list:.section__TEXT,__text,regular,pure_instructions.build_versionmacos,10,14.globl_main##--Beginfunctionmain.p2align4,0x90_main:##@main.cfi_startpro

c++ - 从 C 中的多个线程访问静态常量变量

我有一些在Linux下进行多线程编程的经验(C/C++和POSIX线程),但是最明显的情况有时非常复杂。我的代码中有几个静态常量变量(全局和函数局部),我可以在不使用互斥锁的情况下从多个线程同时访问它们吗?因为我不修改它们,所以应该没问题,但问问总是更好。我必须进行大量的速度优化,所以即使像互斥锁定/解锁这样快速的操作对我来说也是相当昂贵的,尤其是因为我的应用程序将通过长循环访问这些变量。 最佳答案 如果你只在一个线程上初始化它们,然后从不修改它们,那么在没有互斥锁等的情况下从多个线程并发读取它们应该没问题。

C++: STL: set: 存储值常量

具有以下代码:#include#include#include#includeusingnamespacestd;classEmployee{//...int_id;string_name;string_title;public:Employee(intid):_id(id){}stringconst&name()const{return_name;}voidsetName(stringconst&newName){_name=newName;}stringconst&title()const{return_title;}voidsetTitle(stringconst&newTitl

C++ 字符常量表示法

我在C++代码中看到一些对我来说很陌生的字符常量表示法。请就此教育我:if(dc==L''){L表示什么?它是标准的一部分吗?谢谢,语言2 最佳答案 L是文字说明符。对于字符,表示wchar_t,所以L'a'的类型是wchar_t。对于字符串,它表示“wchar_t的数组”,因此L"hello"是一个wchar_t[6]。(对于整数,它意味着“长”,所以1L是一个longint。) 关于C++字符常量表示法,我们在StackOverflow上找到一个类似的问题:

c++ - 如何在运行时以最小的开销共享全局常量?

我正在使用C++11。我不允许使用boost等外部库。我必须只使用STL。我有一些事件,必须标识为字符串常量。我不允许使用枚举或整数或任何其他数据类型。例如:"event_name1""event_name2""some_other_event_name3""a_different_event_name12"然后我有一些类需要使用这些字符串,但不知道其他类的存在(它们彼此没有任何关系)。classPanel{voidpostEvent(){SomeSingleton::postEvent("event_name");}}另一个类::classSomeClass{SomeClass(){